package com.jack.collection;

import java.util.ArrayList;
import java.util.List;
import java.util.Vector;

/**
 * Created by zhang_j on 2019/11/28
 * List接口下一共有三个实现类，分别是ArrayList、Vector和LinkedList。List用于存放多个元素，能够维护元素的次序，并且允许元素的重复。
 *      ArrayList是最常用的List实现类，内部是通过数组实现的，它允许对元素进行快速随机访问。
 *          数组的缺点是每个元素之间不能有间隔，当数组大小不满足时需要增加存储能力，就要将现在的数组复制到新的存储空间中。
 *          当从ArrayList的中间位置插入或者删除元素时，需要对数组进行复制、移动，代价较高。
 *      Vector与ArrayList一样，也是通过数组实现的，不同的是它支持线程的同步。因为实现同步需要很高的花费，所以访问它比访问ArrayList要慢。
 *      LinkedList是用链表结构数据存储数据的，很适合数据的动态插入和删除，随机访问和遍历速度比较慢。
 *          它还提供了List接口中没有定义的方法，专门用于操作表头和表尾元素，可以当作堆栈、队列和双向队列使用。
 *      在集合需要扩容时，vector增长率为两倍，而arrayList为1.5倍
 *
 *
 *  Array和ArrayList：
 *      Array可以包含基本类型和对象类型，ArrayList只能包含对象类型。
 *      Array大小是固定的，ArrayList的大小是动态变化的。
 *      ArrayList提供了更多的方法。
 */
public class ArrayListAndVector {

    public static void main(String[] args) {
        List<String> arrayList = new ArrayList<>();

        Vector<String> vector = new Vector<>();
    }
}
